﻿using System;
using System.Windows.Forms;
using Telerik.WinControls.UI;
using Telerik.WinControls.UI.Docking;
using Zvezda.FSO2.DB;
using Zvezda.FSO2.DB.DataSetFSOTableAdapters;

namespace FSO
{
    public enum ObjctTypeEnum : byte
    {
        /// <summary>
        /// Входящий счет
        /// </summary>
        INVOICE_IN = 1,
        /// <summary>
        /// Исходящий мсет
        /// </summary>
        INVOICE_OUT,
        /// <summary>
        /// Исходящий платеж
        /// </summary>
        PAYMENT_OUT,
        /// <summary>
        /// Входящий платеж
        /// </summary>
        PAYMENT_IN,
        /// <summary>
        /// Организация
        /// </summary>
        ORGANIZATION,
        /// <summary>
        /// Договор
        /// </summary>
        CONTRACT,
        /// <summary>
        /// Счет-фактура
        /// </summary>
        VAT_INVOICE,
        /// <summary>
        /// Материалы
        /// </summary>
        NSI_MATERIAL,
        /// <summary>
        /// Календарный план
        /// </summary>
        CALENDAR_PLAN,
        //Продукты
        NSI_PRODUCT,
        //Протоколы согласования цены
        COST_PROTOCOL,
        //Продукты сгруппированные для ПСЦ
        PRODUCT_UNIT_FOR_COST_PROTOCOL,
		//Продукты сгруппированные для исходящих счетов
		PRODUCT_UNIT_FOR_INVOICE_OUT,
        //Продукты для различных форм()
        PRUDUCT_UNIT_FOR_FORMS,
        //Служебная записка
        DIRECT,
        //Цеховая накладная
        GUILD_BILL,
        //Услуги
        NSI_SERVICE
    }


    //public enum SearchProdUnitType : byte
    //{
    //    NO_INFO = 1,
    //    FOR_COST_PROTOCOL,

    //}
    internal static class FormHelper
    {
        private static RadDock _mainDock;

        private static Form _mainForm;

        private static NSI_EXCHANGE_RATETableAdapter _taExchangeRate = new NSI_EXCHANGE_RATETableAdapter();

        //Перечисление типов объектов учета + те из справочных объектов по которым может быть произведен поиск в главном окне
        public static RadListDataItem[] dataItems = {
                                                        new RadListDataItem("Входящий счет") {Value = ObjctTypeEnum.INVOICE_IN},
                                                        new RadListDataItem("Исходящий платеж") {Value = ObjctTypeEnum.PAYMENT_OUT},
                                                        new RadListDataItem("Договор"){Value = ObjctTypeEnum.CONTRACT},
                                                        new RadListDataItem("Организация"){Value =ObjctTypeEnum.ORGANIZATION},
                                                        new RadListDataItem("Исходящий счет"){Value = ObjctTypeEnum.INVOICE_OUT},
                                                        new RadListDataItem("Входящий платеж"){Value = ObjctTypeEnum.PAYMENT_IN},
                                                        new RadListDataItem("Календарный план"){Value = ObjctTypeEnum.CALENDAR_PLAN},
                                                        new RadListDataItem("Простокол согласования цены"){Value = ObjctTypeEnum.COST_PROTOCOL},
                                                        new RadListDataItem("Служебная записка"){Value = ObjctTypeEnum.DIRECT},
                                                        new RadListDataItem("Цеховая накладная"){Value = ObjctTypeEnum.GUILD_BILL},
                                                        new RadListDataItem("Счет фактура"){Value = ObjctTypeEnum.VAT_INVOICE}
                                                    };

        internal static RadDock MainDock
        {
            get
            {
                return _mainDock;
            }
            set
            {
                _mainDock = value;
            }
        }

        internal static Form MainForm
        {
            get 
            {
                return _mainForm;
            }
            set
            { 
                _mainForm = value;
            }
        }

        public static bool HasOpenedForm(string fromCode)
        {
            bool bHasOpenedWindow = false;
            foreach (Form form in _mainDock.MdiChildren)
            {
                IntefaceObjectForm formObject = form as IntefaceObjectForm;
                if (formObject != null && formObject.FormName == fromCode)
                {
                    _mainDock.ActivateMdiChild(form);
                    bHasOpenedWindow = true;
                }
            }
            return bHasOpenedWindow;
        }
        //internal static UserControl GetControl(string ObjName)
        public static decimal GetRate(String curName, DateTime date)
        {
            decimal rate = -1;

            if (curName == null || curName == "")
            {
                MessageBox.Show("Не указана валюта", "Не указана валюта", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                rate = (decimal) _taExchangeRate.getRate(curName, date);
                if (rate == 0)
                {
                    MessageBox.Show("Не введен курс " + curName + " на " + date.ToShortDateString(), "Не введен курс валюты!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }

            return rate;
        }

        #region Functions for block of InviceIn
        //Функция валидирующая разноску - true - от рублевой ячейки, false - от валютной
        private static void ValidatePayOutOnInvIn(DataSetFSO.PAY_OUT_ON_INV_INRow poi ,bool isRub)
        {
            if (isRub)
            {

            }
            else
            {
 
            }
        }
        #endregion

    }
}